/**
 @file ABP.h
 @brief Implementación de protección contra pérdidas en unicast mediante el protocolo de bit alternado.
 @date   14/11/2012
 @version v.0.9
 @author Julian Ovalle
         julianovalle@ula.ve
*/

#ifndef ABP_H_
#define ABP_H_

#include "app_layer_def.h"
#include "message_def.h"

//! @brief Bit de opción alternado por el protocolo
#define ABP_BIT 0b01000000

//! @brief Número máximo de retransmisiones a la espera de un ACK
#define ABP_MAX_RETRIES 3

//! @brief Tiempo máximo en milisegundos a la espera de un ACK
#define ABP_TIMEOUT 66    //msec 210 previously 65

#define ABP_DEBUG

/*!
 @brief Máquina de estados del emisor ABP. Espera por el acuse de recibo hasta ABP_TIMEOUT y realiza hasta ABP_MAX_RETRIES retransmisiones.
 @return 0 en caso de exito. -1 en caso de agotar las retransmisiones.
 */
int abpOut (struct msg_t* msg, wpan_node_t *tmp);

void abpInit();

#endif /* ABP_H_ */
